package middle;

/**
 * 给你一个有序数组 nums ，请你 原地 删除重复出现的元素，使每个元素 最多出现两次 ，返回删除后数组的新长度。
 *
 * 不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
 *
 * 链接：https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii
 * */
public class RemoveDuplicatesFromSortedArrayII {

    public static void main(String[] args) {
        Solution solution = new Solution();
        solution.removeDuplicates(new int[]{1,1,1,2,2,3});
    }

    static class Solution {
        static final int CONST = 2;
        public int removeDuplicates(int[] nums) {
            if(nums.length <= CONST){
                return nums.length;
            }
            int slow = CONST;
            int fast = CONST;
            while(fast < nums.length){
                if(nums[fast] != nums[slow-2]){
                    nums[slow] = nums[fast];
                    slow++;
                }
                fast++;
            }
            return slow;
        }
    }
}
